//Aqui esta um
exemplo de como se fazer um ícone aparecer no TrayBar
Unit1.cpp
//---------------------------------------------------------------------------
#include
#include
#pragma hdrstop
#include
"Unit1.h"
//---------------------------------------------------------------------------
#pragma resource
"*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall
TForm1::TForm1(TComponent* Owner) :
TForm(Owner)
{
}
//---------------------------------------------------------------------------
void TForm1::AddTrayIcon()
{
// Esta funcao adiciona um icone no tray
//
Inicializa a estrutura para Sell_NotifyIcon
NOTIFYICONDATA icondata ;
memset (&icondata,
0, sizeof (icondata)) ;
icondata.cbSize
= sizeof (icondata) ;
// Handle da janela para receber a notificacao
icondata.hWnd
= Handle ;
//
Setar o Hint quando o
mouse passado por cima
strncpy (icondata.szTip,"Aplicação C++Builder",sizeof (icondata.szTip));
//
Usar o icon da aplicacao
no tray
icondata.hIcon = Application->Icon->Handle ;
//
Diz para o shell o valor
para usar para notificacao
icondata.uCallbackMessage
= iconmessage ;
//
Diz para nos a notificacao (tudo no caso)
icondata.uFlags = NIF_MESSAGE | NIF_ICON
| NIF_TIP ;
//
Adiciona um icone
Shell_NotifyIcon
(NIM_ADD, &icondata) ;
}
//---------------------------------------------------------------------------
void
TForm1::RemoveTrayIcon()
{
// Esta funcao remove o icone do tray
NOTIFYICONDATA icondata ;
memset (&icondata,
0, sizeof (icondata)) ;
icondata.cbSize
= sizeof (icondata) ;
icondata.hWnd
= Handle ;
Shell_NotifyIcon (NIM_DELETE, &icondata) ;
}
//---------------------------------------------------------------------------
void __fastcall
TForm1::WndProc(Messages::TMessage
&Message)
{
/*se a janela recebe a notificacao
de mensagem do shell ai
passa para a funcao
ProcessIconMessage. Senao
deixa o default*/
//
processamento para a mensagem
if (Message.Msg == iconmessage)
{
if (Message.LParam
== WM_LBUTTONDBLCLK)
{
Application->Terminate () ;
}
return ;
}
TForm::WndProc (Message) ;
}
//---------------------------------------------------------------------------
void __fastcall
TForm1::FormCreate(TObject
*Sender)
{
// Cria um unico
numero de mensagem
iconmessage = RegisterWindowMessage
("IconNotify")
;
AddTrayIcon () ;
}
//---------------------------------------------------------------------------
void __fastcall
TForm1::FormDestroy(TObject
*Sender)
{
RemoveTrayIcon
() ;
}
//---------------------------------------------------------------------------
Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit3H
#define Unit3H
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
unsigned int iconmessage
;
void AddTrayIcon();
void RemoveTrayIcon();
protected:
virtual void __fastcall
WndProc(Messages::TMessage
&Message) ;
public: // User declarations
__fastcall TForm1(TComponent*
Owner);
};
//---------------------------------------------------------------------------
extern TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
/*uma outra maneira
de se fazer isso tudo é usar o componente
que existe nos pacotes do RX, que está no endereço
http://www.rx.demo.ru*/
|